/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controlador;

import connection.Connection;
import dao.EvaluadorJpaController;
import dao.UsuarioJpaController;
import dao.exceptions.IllegalOrphanException;
import dao.exceptions.NonexistentEntityException;
import dao.exceptions.PreexistingEntityException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManagerFactory;
import modelo.Evaluador;
import modelo.Usuario;

/**
 *
 * @author Fabian
 */
@ManagedBean(name = "ControladorEvaluador")
@SessionScoped
public class ControladorEvaluador extends Connection {

    private String txtCedula;
    private String txtNombre;
    private String txtCargo;
    private String txtCelular;
    private String txtDireccion;
    private String txtEMail;
    private String txtTelefono;
    private String cedula;
    private String pass;
    private EvaluadorJpaController daoEvaluador;
    private UsuarioJpaController daoUsuario;
    private Evaluador evaluador;
    public EntityManagerFactory factory;
    private List<Evaluador> listaEvaluador;

    public void cargarDatos() {

        factory = Connection.getEmf();
        daoEvaluador = new EvaluadorJpaController(factory);
        Controlador controla = (Controlador) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("Controlador");
        setEvaluador(daoEvaluador.findEvaluador(controla.getLogin()));

    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }
      public void activarEvaluador() {
        
         
        Evaluador reemplazo = getEvaluador();
        factory = Connection.getEmf();
        daoUsuario = new UsuarioJpaController(factory);
if(daoUsuario.findUsuarioexisting(reemplazo.getCedula())){
        Usuario us = daoUsuario.findUsuario(reemplazo.getCedula());
        
        us.setEstado("activo");
        try {
            daoUsuario.edit(us);
        } catch (IllegalOrphanException ex) {
            Logger.getLogger(ControladorEvaluador.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ControladorEvaluador.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(ControladorEvaluador.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
      
else{
     Usuario us = new Usuario();
        factory = Connection.getEmf();
        daoEvaluador = new EvaluadorJpaController(factory);
        daoUsuario = new UsuarioJpaController(factory);
     
        us.setLogin(txtCedula);
        us.setContrasena("123456");
        us.setTipousuario(txtCargo);
        us.setEstado("activo");
            try {
                daoUsuario.create(us);
            } catch (PreexistingEntityException ex) {
                Logger.getLogger(ControladorEvaluador.class.getName()).log(Level.SEVERE, null, ex);
            } catch (Exception ex) {
                Logger.getLogger(ControladorEvaluador.class.getName()).log(Level.SEVERE, null, ex);
            }
}
      }
    
    
    
    public void inactivarEvaluador() {
        Evaluador reemplazo = getEvaluador();
        factory = Connection.getEmf();
        daoUsuario = new UsuarioJpaController(factory);
        Usuario us = daoUsuario.findUsuario(reemplazo.getCedula());
        us.setEstado("inactivo");
        try {
            daoUsuario.edit(us);
        } catch (IllegalOrphanException ex) {
            Logger.getLogger(ControladorEvaluador.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ControladorEvaluador.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(ControladorEvaluador.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void editarEvaluador() {

        Evaluador reemplazo = getEvaluador();
        factory = Connection.getEmf();
        daoEvaluador = new EvaluadorJpaController(factory);
        daoUsuario= new UsuarioJpaController(factory);
               Evaluador e = daoEvaluador.findEvaluador(reemplazo.getCedula());
               Usuario us= daoUsuario.findUsuario(reemplazo.getCedula());
               us.setContrasena(pass);
              e.setCargo(reemplazo.getCargo());
        e.setCelular(reemplazo.getCelular());
        e.setDireccion(reemplazo.getDireccion());
        e.setEmail(reemplazo.getEmail());
        e.setNombre(reemplazo.getNombre());
        e.setTelefono(reemplazo.getTelefono());
        try {
            daoEvaluador.edit(e);
            daoUsuario.edit(us);
        } catch (IllegalOrphanException ex) {
            Logger.getLogger(ControladorEvaluador.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ControladorEvaluador.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(ControladorEvaluador.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void cargarTablaEvaluador() {
        factory = Connection.getEmf();
        daoEvaluador = new EvaluadorJpaController(factory);
        setListaEvaluador(daoEvaluador.findEvaluadorEntities());

    }

    public String getCedula() {
        return cedula;
    }

    public void setCedula(String cedula) {
        this.cedula = cedula;
    }

  
    public void crearEvaluador() {
        Usuario us = new Usuario();
        factory = Connection.getEmf();
        daoEvaluador = new EvaluadorJpaController(factory);
        daoUsuario = new UsuarioJpaController(factory);

        Evaluador eva = new Evaluador();
        us.setLogin(txtCedula);
        us.setContrasena("123456");
        us.setTipousuario(txtCargo);
        us.setEstado("activo");
        eva.setCargo(txtCargo);
        eva.setCedula(txtCedula);
        eva.setCelular(txtCelular);
        eva.setDireccion(txtDireccion);
        eva.setEmail(txtEMail);
        eva.setNombre(txtNombre);
        eva.setTelefono(txtTelefono);

        try {
            daoUsuario.create(us);
            daoEvaluador.create(eva);

        } catch (PreexistingEntityException ex) {
            Logger.getLogger(ControladorUsuarios.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(ControladorUsuarios.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public Evaluador getEvaluador() {
        return evaluador;
    }

    public void setEvaluador(Evaluador evaluador) {
        this.evaluador = evaluador;
    }

    public List<Evaluador> getListaEvaluador() {
        return listaEvaluador;
    }

    public void setListaEvaluador(List<Evaluador> lista) {
        this.listaEvaluador = lista;
    }

    public String getTxtNombre() {
        return txtNombre;
    }

    public void setTxtNombre(String txtNombre) {
        this.txtNombre = txtNombre;
    }

    public String getTxtCargo() {
        return txtCargo;
    }

    public void setTxtCargo(String txtCargo) {
        this.txtCargo = txtCargo;
    }

    public String getTxtTelefono() {
        return txtTelefono;
    }

    public void setTxtTelefono(String txtTelefono) {
        this.txtTelefono = txtTelefono;
    }

    public String getTxtDireccion() {
        return txtDireccion;
    }

    public void setTxtDireccion(String txtDireccion) {
        this.txtDireccion = txtDireccion;
    }

    public String getTxtCelular() {
        return txtCelular;
    }

    public void setTxtCelular(String txtCelular) {
        this.txtCelular = txtCelular;
    }

    public String getTxtCedula() {
        return txtCedula;
    }

    public void setTxtCedula(String txtCedula) {
        this.txtCedula = txtCedula;
    }

    public String getTxtEMail() {
        return txtEMail;
    }

    public void setTxtEMail(String txtEMail) {
        this.txtEMail = txtEMail;
    }
}
